package com.todo.event.activity.infrastructure.entity.domain;

import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @author azhebuxing
 * @date 2025/1/7 09:28
 * @description
 */
@Data
public class EventDetailDO {

    /**
     * 主键
     */
    private Long id;
    /**
     * 事件code
     */
    private String eventCode;
    /**
     * 业务场景
     */
    private Integer businessLine;
    /**
     * 事件基础信息
     */
    private EventInfo eventInfo;
    /**
     * 事件字段配置
     */
    private List<EventField> eventFieldList;
    /**
     * 状态
     */
    private Integer status;

    /**
     * 创建人
     */
    private String createUser;
    /**
     * 最后更新人
     */
    private String lastUpdateUser;

    private Integer isDelete;
    private Date createTime;
    private Date updateTime;

    @Data
    public static class EventInfo{
        /**
         * 事件分类
         */
        private Integer eventClassify;
        /**
         * 事件类型
         */
        private Integer eventType;
        /**
         * 事件名称
         */
        private String eventName;
        /**
         * 事件主题
         */
        private String topicName;
        /**
         * tag
         */
        private String tag;
        /**
         * 消费者名称
         */
        private String consumerName;
        /**
         * 队列类型
         */
        private Integer queueType;
        /**
         * 基础配置
         */
        private String baseConf;
        /**
         * 扩展配置
         */
        private String extraConf;
        /**
         * 事件规则
         */
        private String rule;
    }

    @Data
    public static class EventField{
        /**
         * 数据来源 代码配置、消息获取、静态数值···
         */
        private Integer dataSource;
        /**
         * 转换方式 根据数据来源做策略
         */
        private String transfer;
        /**
         * 字段名称
         */
        private String fieldName;
        /**
         * 字段类型
         */
        private Integer fieldType;
        /**
         * 字段长度
         */
        private Integer fieldLength;
        /**
         * 字段描述
         */
        private String fieldDesc;
        /**
         * 是否唯一
         */
        private Integer uniqueField;
        /**
         * 是否供外部选择
         */
        private Integer output;
        /**
         * 选择操符
         */
        private String selectOperate;
        /**
         * 选择类型 枚举、自定义
         */
        private Integer selectType;
        /**
         * 枚举值 selectType = enums 时有值
         */
        private String enumsValue;
    }
}
